#include<iostream>
#include<string>
#include<memory>
#include"TcpServer.hpp"
#include"Calculator.hpp"

Calculator calculator;

//回调方法处理inbuffer缓冲区中的数据
void DefaultOnMessage(std::shared_ptr<Connection> connection)
{
    //对报文进行处理
    std::cout << "上层获得了数据" << connection->InBuffer() << std::endl;
    std::string response_str = calculator.Handle(connection->InBuffer());
    //如果为空说明接收到的报文不完整，等待下次处理
    if(response_str.empty())
        return ;
    //如果不为空，就将处理后的数据放到发送缓冲区中，准备发送
    connection->AppendOutBuffer(response_str);
    connection->_tcp_server_ptr->Sender(connection);
}


int main()
{
    std::shared_ptr<TcpServer> tcp_svr(new TcpServer(8888,DefaultOnMessage));
    tcp_svr->Init();
    tcp_svr->Loop();
    return 0;
}